﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IScreenCapture;
/// <summary>
/// 整体控制器由各接口组成
/// </summary>
public abstract class CaptureSession
{
    protected readonly ICaptureController controller;
    protected readonly ISelectionTool selectionTool;
    protected readonly IEnumerable<IAnnotationTool> annotationTools;
    protected readonly IHistoryService history;
    protected readonly IExportService exporter;
    protected readonly IScreenRecordingService recorder;
    protected readonly IConfigurationService config;
    protected CaptureSession(ICaptureController controller,
        ISelectionTool selectionTool,
        IEnumerable<IAnnotationTool> annotationTools,
        IHistoryService history,
        IExportService exporter,
        IScreenRecordingService recorder,
        IConfigurationService config)
    {
        this.controller = controller;
        this.selectionTool = selectionTool;
        this.annotationTools = annotationTools;
        this.history = history;
        this.exporter = exporter;
        this.recorder = recorder;
        this.config = config;
    }
    public abstract Task RunAsync();
}
